-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI for forward-porting GC3 patches to GC4 #147
base: gc4
Are you sure you want to change the base?
Conversation
6900d8d
to
1c95bd0
Compare
build_aux/bootstrap
Outdated
@@ -96,12 +96,15 @@ autoreconf $AC_OPTS $MAINPATH > $msgs 2>&1; ret=$? | |||
# Filter aminclude_static as those are only used _within_ another | |||
# check so reporting as portability problem is only noise. | |||
# This has the effect of redirecting some error messages to stdout. | |||
# to be moved to the Makefile - currently only usable for bootstrap, | |||
# but should be done on autogen, too |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A, that old TODO...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suggest to wrap the commits again. From what I've inspected we need one refactor for integrating 4.x logic (you've spotted that well) nicely.
libcob/fileio.c
Outdated
snprintf (file_open_env, (size_t)COB_FILE_MAX, "%s%s", "IO_", s); | ||
if ((file_open_io_env = cob_get_env (file_open_env, NULL)) == NULL) { | ||
snprintf (file_open_env, (size_t)COB_FILE_MAX, "%s%s", "io_", s); | ||
if (f != NULL) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When/why should f
be null here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because some functions (open_cbl_file
, cob_sys_delete_file
, ...) were "improved" to perform file mapping in GC3 (rev 3944), by calling the cob_chk_file_mapping
function, which does not take a cob_file
argument in GC3 but does in GC4, and that function in turn calls cob_chk_file_env
. Since these functions (open_cbl_file
, cob_sys_delete_file
, ...) do not use a cob_file
object, I resorted to passing NULL and coping with that...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this okay for you @GitMensch ?
oops, hope I haven't broken the gitignore in f36dcda - if not then we likely should apply that to the gcos3x branch as well. |
Saw your message a bit late, added another commit in the meantime 😅 By wrapping up you mean, committing to SVN ? (after doing the requested modifications of course) |
This approach is reasonable in general.
... So you did already check that this piece of code changed in a later commit?
If you see a difference in the current code, then you can use "svn annotate" to check which commit did the change in this party of fileio.c to know what to merge before the refactoring.
:-)
Am 1. Juni 2024 00:07:13 MESZ schrieb OCP David Declerck ***@***.***>:
…
@ddeclerck commented on this pull request.
> + /* apply COB_FILE_PATH if set (similar to ACUCOBOL's FILE-PREFIX) */
+ if (file_paths) {
+ for(k=0; file_paths[k] != NULL; k++) {
+ snprintf (file_open_buff, (size_t)COB_FILE_MAX, "%s%c%s",
+ file_paths[k], SLASH_CHAR, file_open_name);
+ file_open_buff[COB_FILE_MAX] = 0;
+ if (access (file_open_buff, F_OK) == 0) {
+ break;
+ }
+#if defined(WITH_CISAM) || defined(WITH_DISAM) || defined(WITH_VBISAM) || defined(WITH_VISAM)
+ /* ISAM may append '.dat' to file name */
+ snprintf (file_open_buff, (size_t)COB_FILE_MAX, "%s%c%s.dat",
+ file_paths[k], SLASH_CHAR, file_open_name);
+ file_open_buff[COB_FILE_MAX] = 0;
+ if (access (file_open_buff, F_OK) == 0) {
+ snprintf (file_open_buff, (size_t)COB_FILE_MAX, "%s%c%s",
+ file_paths[k], SLASH_CHAR, file_open_name);
+ file_open_buff[COB_FILE_MAX] = 0;
+ break;
+ }
+#endif
+ }
+ if (file_paths[k] == NULL) {
+ snprintf (file_open_buff, (size_t)COB_FILE_MAX, "%s%c%s",
+ file_paths[0], SLASH_CHAR, file_open_name);
+ file_open_buff[COB_FILE_MAX] = 0;
+ }
+ strncpy (file_open_name, file_open_buff, (size_t)COB_FILE_MAX);
+ }
I remember why I haven't refactored that straight away : in case subsequent commits modify the same code, conflicts will be much easier to handle. I was thinking about keeping the refactoring for after all the patches are merged...
--
Reply to this email directly or view it on GitHub:
#147 (comment)
You are receiving this because you commented.
Message ID: ***@***.***>
|
I tend to be overly "conservative". Indeed this piece of code is barely modified afterwards, so I'll do the refactoring. |
Is this okay to merge (@GitMensch) ? |
I'll try to review this (late) evening. |
looks_absolute should use "src", not file_open_name directly (merge issue?) "apply_file_paths" should get that via argument as well and have a function comment that it writes to the global buffer. Then add a Changelog "extracted from xyz and also used in abc" to finish that last commit. We either have to remember for later that we need to add a testcase for the new use or (potentially easier) also include it in the last commit as well. |
This change is introduced in a later commit (3993).
Alright ; as for its output, should it write it through its argument or directly to
By "new use", de you mean the fact that we apply file paths to the complex case ? |
yes
good catch - then it is fine to leave as is; if you don't expect any big problem it would be nice to merge that in this bunch to commit that together, but a later bunch is fine as well
Depends on how other functions do it - it is best for now to mimic that (once the merge is completed we may revisit that part, but there are "some" commits left until we get there). |
I made the necessary changes.
I find it more convenient to merge consecutive commits. If that's okay for you I could add to the current batch the next eligible commits until 3993 (that would be 6 commits: 3973, 3979, 3988, 3989, 3992 and 3993). |
That batch is good to go :-) |
Merged in SVN ;) I see the next commits deal with translation files. Checking the history, it seems those files are usually just copied "as-is" from the GC3 branch to the trunk; is this correct ? |
No, only new files are copied, the others left as-is; before a release I regenerate the files but the files are nearly completely maintained by the translation project. And of course |
Alright.
Hope this unfinished sentence did not have any vital info 😅 |
I can't remember any important info missing there. |
Codecov ReportAttention: Patch coverage is
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## gc4 #147 +/- ##
======================================
Coverage ? 65.61%
======================================
Files ? 38
Lines ? 67728
Branches ? 18932
======================================
Hits ? 44438
Misses ? 16111
Partials ? 7179 ☔ View full report in Codecov by Sentry. |
Quick question: I sometimes see alternative code for GC4 in I'm talking about those:
|
That's quite a bunch - any reason to not merge upstream? [we really need to get to commits that have someone else in the ChangeLogs...] |
No good reason. It may be many commits, but the first batch had way more lines (this one is only +1,162 −904).
I'm looking forward to reaching commit 4614 - our first contribution to GC3 ;) |
@GitMensch This looks large enough already, I'll think I'll end this batch here. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current bunch looks quite fine. Some issues are in the area of "oh yeah, we fixed that later" - but nothing that's important enough to be early checked in.
If you don't see anything that needs to be detail-checked (any issues during merge?) then that's good to go upstream as-is.
What would this issues be ?
Nothing that I can find of. Merging 5129 was just "slightly" more tricky due to some differences between 3.x and trunk (required more manual conflict resolution), but it didn't raise any issue, and the testsuite ran fine after this. There were some issues trying to merge 5131, but I stepped back and chosed to leave this one for the next batch - so this next batch might be a bit more tricky (and I'll tell you if I encounter any difficulty). |
So up to svn now (issues would be mostly around TODO notes).
Am 18. Januar 2025 05:44:14 MEZ schrieb OCP David Declerck ***@***.***>:
…> The current bunch looks quite fine. Some issues are in the area of "oh yeah, we fixed that later" - but nothing that's important enough to be early checked in.
What would this issues be ?
> If you don't see anything that needs to be detail-checked (any issues during merge?) then that's good to go upstream as-is.
Nothing that I can find of. Merging 5129 was just "slightly" more tricky due to some differences between 3.x and trunk (required more manual conflict resolution), but it didn't raise any issue, and the testsuite ran fine after this. There were some issues trying to merge 5131, but I stepped back and chosed to leave this one for the next batch - so this next batch might be a bit more tricky (and I'll tell you if I encounter any difficulty).
--
Reply to this email directly or view it on GitHub:
#147 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
d77633c
to
ae1f11f
Compare
I think this concludes this batch. Don't be impressed by the line count: actually a single commit added 2600 lines to a testsuite file ; other than that, there's only 600 new lines of code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is that needed? We shouldn't have anything in here that requires updating the internal m4 files or libtool, do we?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't know why, but with the latest Ubuntu image, the CI stopped working - complaining about a libtool version mismatch. So I had to add the "install" parameter to the bootstrap script (see below) to regenerate the files, but then it complained it could not find autopoint - hence the extra package here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See the current GC4 CI run.
Also not that the MacOS and MSYS2 CI do call bootstrap install
.
# Since the latest Ubuntu image, lcov fails complaining about negative branch counts, | ||
# and using fprofile-update=atomic as suggested does not help, so use the previous image | ||
# runs-on: ubuntu-latest | ||
runs-on: ubuntu-22.04 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
complain = error? I think this should be fixed on the gcos-gc3 branch - and not with a downgrade
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, blocking error. See Issue 212. I haven't been able to fix that, so I went with a downgrade so that I could continue focusing on the merge.
Note that this is only for the coverage part of the workflow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apart from the workflow file (which cannot be part of this in any case), which we should fix in the gcos 3.x branch in any case, this bunch is good to go; nice to have the testcases in
note: I'm not sure when this all broke, but the increasing test failures of 4.x under Win32 are kind of concerning:
- MSVC - delay load stuff for BDB does not work any more - I'm sure it did before
- MSYS1 - a bunch of new failures
- general (minor): Win32 adjustments for the testsuite / code to reduce false-positives seems to not be merged yet; maybe we can get those commits in early, maybe not
It could be good to take some time "soon" to work at least on some of the new failures (especially the delay-load stuff for ISAM, that's 4.x in any case).
In general it would be good to update the gcos4 branch to the newest CI definitions (they look different now) and adjust the expected test case failures (likely more for now).
I keep track of those numbers, they do not seem to have increased significantly (even reduced under MSVC).
As far as I remember, it did not. When I started the merge, I wrote down some of the most recurring error messages in the testsuite logs, and in particular I had many occurrences of "error: I/O routine BDB cannot be loaded: module libcobdb-1.dll not found"
Those commits (5308, 5315-5318) were merged a while ago.
I think you made #190 for this ; is this okay to be merged (after a rebase) ? |
Follow-up of #146.